package com.czk.factory.support;

import com.czk.factory.config.BeanDefinition;
import com.czk.exception.BeansException;

import java.lang.reflect.Constructor;

/**
 * 实例化的策略接口
 *
 * @Author:ChenZhangKun
 * @Date: 2023/2/25 15:13
 */
public interface InstantiationStrategy {
    /**
     * 实例化方法
     *
     * @param beanDefinition 对象描述
     * @param beanName       对象名称
     * @param ctor           构造器对
     * @param args           参数名
     * @return
     * @throws BeansException
     */
    Object instantiate(BeanDefinition beanDefinition, String beanName, Constructor ctor, Object[] args) throws BeansException;
}
